/*
 * Buffer(缓冲区)
 * 		- Buffer的就够和数组很像, 操作的方法也和数组类似
 * 		- 数组中不能存储二进制的文件, 而buffer就是专门来存储二进制数据的
 * 		- 使用buffer不需要引入模块, 直接使用即可
 * 		- 在buffer中存储的都是二进制数据
 * 			buffer中的每一个元素的范围是从00 - ff
 * 			buffer中的一个元素, 占用内存的一个字节
 * 		- buffer的大小一旦确定, 则不能修改
 */

var str = "hello 尚硅谷!"

// 将一个字符串保存在Buffer中
var buf = Buffer.from(str)

console.log(buf)
console.log(buf.length)  // 占用内存大小
console.log(str.length)  // 字符串的长度
console.log(buf.toString())

// 创建一个指定大小的buffer
// buffer构造函数都是不推荐使用的
// var buf2 = new Buffer(1024)  // 1kB大小

// 创建一个10个字节的buffer
var buf2 = Buffer.alloc(10)
console.log(buf2)
buf2[0] = 88
buf2[1] = 255
buf2[2] = 0xaa
buf2[3] = 256
buf2[10] = 15
console.log(buf2)

// 只要数字在控制台或页面输出一定是10进制
console.log(buf2[2])
console.log(buf2[2].toString(16))

// Buffer.allocUnsafe(size) 创建一个指定大小的buffer, 但是buffer中可能含有敏感数据
